/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.tri.gui.worker;

import java.util.concurrent.ExecutionException;
import org.tri.entity.*;
import org.tri.persistence.PersistenceManager;

/**
 *
 * @author giaco
 */
public class VentaTransientWorker extends TransientWorker{
    
        
    public VentaTransientWorker ( Venta venta){
        super ( venta );
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected Object doInBackground() throws Exception {
        Venta venta = (Venta)objectToTransient;
        
        //primero, desafectamos los animales de la venta
        venta.obtenerAnimales().removeAll(venta.obtenerAnimales());
        
        PersistenceManager.makePersistent( venta );
                
        //tenemos que eliminar algunas partes del arbol manualmente
        //para evitar errores y lentitud
        String query = String.format(
               "DELETE FROM VENTA WHERE id_venta = %s",
                venta.getIdVenta() );

        PersistenceManager.executeQuery( query );
        
        //debo eliminarlo tambien de las historicas, sino lo pasa a historicas
        query = String.format(
               "DELETE FROM VENTA_HIST WHERE id_venta = %s",
                venta.getIdVenta() );

        PersistenceManager.executeQuery( query );
            
        
        return null;

    }//end método doInBackground

    /**
     * Comprueba que se completo con la tarea con éxtito y se envian eventos
     * según corresponda.
     */
    @Override
    protected void done() {
        try {
            //comprobamos que termino con exito
            get();

        } catch ( InterruptedException ex ) {
        } catch ( ExecutionException ex ) {
            fireErrorTransit( ex );

        } finally {
            fireDoneTrasit();

        }

    }//end método done
    
}//end clase VentaTransientException
